Символьные вычисления
Символьные уравнения
Создание символьных уравнений
Чтобы задать в Engee символьное уравнение, вместо знака равенства в уравнении необходимо использовать оператор ~. Всё уравнение присваивается некоторой символьной переменной.
Например, уравнение задается следующим образом:
using Symbolics;
@variables x;
eqn = x^3-x ~ 1
✏️Задание 1
Задайте в Engee символьное уравнение и сохраните его в символьной переменной eqn.
Решение
using Symbolics;
@variables x;
eqn = 5*x^2-3*x+2 ~ 0
Для задания уравнений также можно использовать созданные ранее символьные выражения.
Например, можно сначала создать символьное выражение , а затем с его помощью задать уравнение :
using Symbolics;
@variables x;
y = x/3;
eqn = y ~ 2
Для задания уравнения можно использовать несколько символьных выражений.
✏️Задание 2
Задайте в Engee символьное уравнение .
Решение
using Symbolics;
@variables E m c;
eqn = E ~ m*c^2
✏️Задание 3
Создайте в Engee символьные выражения для кинетической и потенциальной энергии тела: и . Затем задайте символьное уравнение, в котором сумма кинетической и потенциальной энергии приравнивается к константе Const.
Решение
using Symbolics;
@variables m v g h Const;
EK = 1/2*m*v^2;
EP = m*g*h;
eqn = EK + EP ~ Const
Решение символьных линейных уравнений
В Engee символьные линейные уравнения могут быть решены с помощью функции Symbolics.solve_for. Первым аргументом этой функции является символьное уравнение, записанное в явном виде, или имя переменной, в которой хранится это уравнение. Второй аргумент – имя переменной, относительно которой необходимо решить уравнение.
Например, символьное уравнение решается так:
using Symbolics;
@variables x
eqn = x/3 + 2 ~ 7;
xsol = Symbolics.solve_for(eqn, x)
или так:
using Symbolics;
@variables x
xsol = Symbolics.solve_for(x/3 + 2 ~ 7, x)
Корень уравнения сохранен в переменной xsol.
✏️Задание 4
Решите в Engee символьное линейное уравнение .
Решение
using Symbolics;
@variables x
eqn = 64*x-189 ~ 354;
xsol = Symbolics.solve_for(eqn, x)
Если в уравнение входят несколько символьных переменных, которым не присвоены числовые значения, то функция Symbolics.solve_for выразит искомую неизвестную через другие переменные, т.е. решение будет представлено в виде символьного выражения.
Например, решим символьное уравнение :
using Symbolics;
@variables x a b c d
eqn = a*(b*x + c) ~ d;
xsol = Symbolics.solve_for(eqn, x)
Решение систем символьных линейных уравнений
Симстемы символьных линейных уравнений решаются в Engee также с помощью функции Symbolics.solve_for. При этом первым аргументом функции будет вектор, состоящий из уравнений системы (или из имен переменных, в которых хранятся уравнения), а вторым аргументом – вектор имен переменных, относительно которых нужно решить систему. Выход функции представляет собой вектор искомых переменных.
Например, систему символьных линейных уравнений можно решить так:
using Symbolics;
@variables x y
eqn1 = x + y ~ 2;
eqn2 = x - y ~ 4;
xsol, ysol = Symbolics.solve_for([eqn1, eqn2], [x, y])
или так:
using Symbolics;
@variables x y
xsol, ysol = Symbolics.solve_for([x + y ~ 2, x - y ~ 4], [x, y])
✏️Задание 5
Решите в Engee систему символьных линейных уравнений
Решение
using Symbolics;
@variables x1 x2 x3
eqn1 = 2*x1 + 2*x2 + 2*x3 ~ 2;
eqn2 = x1 + x2 + 3*x3 ~ 5;
eqn3 = x1 + 4*x2 + x3 ~ 10;
x1sol, x2sol, x3sol = Symbolics.solve_for([eqn1, eqn2, eqn3], [x1, x2, x3])
Решение символьных нелинейных уравнений и их систем
Нелинейные смивольные уравнения в Engee могут быть решены с помощью библиотеки SymPy, которая содержит функции символьной математики языка Python. В этой библиотеке содержится функция solve, символьно решающая алгебраические и трансцендентные уравнения любых типов. Ее аргументами являются имя переменной, в которой хранится уравнение, и имя искомой переменной.
Например, решим нелинейное уравнение :
using SymPy;
x = symbols("x");
eq = x^2 ~ 4;
solve(eq, x)
Обратите внимание на то, что при использовании библиотеки SymPy символьные переменные задаются иначе – с помощью команды symbols. Если нужно задать несколько символьных переменных, то используется такая конструкция:
using SymPy;
x, y, z = symbols("x y z")
С помощью функции solve можно решать и системы уравнений. При этом используется такой же синтаксис, как в случае функции Symbolics.solve_for.
Например, символьная система уравнений решается так:
using SymPy;
x, y = symbols("x y");
eq1 = 2*x + 3*y ~ 6;
eq2 = 3*x - 4*y ~ 12;
solve([eq1, eq2], [x, y])
✏️Задание 6
Решите в Engee систему символьных уравнений
с помощью функции solve.
Решение
using SymPy;
x, y = symbols("x y");
eq1 = x^2 + y^2 ~ 9;
eq2 = x - y ~ 1;
solve([eq1, eq2], [x, y])